package com.hq.modeapp.tools;


import java.util.Calendar;
import java.util.Date;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 验证工具包
 * 
 * @author liux (http://my.oschina.net/liux)
 * @version 1.0
 * @created 2012-3-21
 */
public class ConfirmUtils {

	private final static Pattern emailer = Pattern
			.compile("\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*");

	/**
	 * 
	 * @函数名称 : isEmpty
	 * @功能描述 : 判断给定字符串是否空白串。 空白串是指由空格、制表符、回车符、换行符组成的字符串 若输入字符串为null或空字符串，返回true
	 * @参数及返回值说明：
	 * @param input
	 * @return
	 * 
	 * @修改记录：
	 * @日期：2012-12-25 下午6:11:51 修改人：Administrator
	 * @描述 ：
	 * 
	 */
	public static boolean isEmpty(String input) {
		if (input == null || "".equals(input))
			return true;

		for (int i = 0; i < input.length(); i++) {
			char c = input.charAt(i);
			if (c != ' ' && c != '\t' && c != '\r' && c != '\n') {
				return false;
			}
		}
		return true;
	}

	/**
	 * 
	 * @函数名称 : isEmail
	 * @功能描述 : 判断是不是一个合法的电子邮件地址
	 * @参数及返回值说明：
	 * @param email
	 * @return
	 * 
	 * @修改记录：
	 * @日期：2012-12-25 下午6:12:39 修改人：Administrator
	 * @描述 ：
	 * 
	 */
	public static boolean isEmail(String email) {
		if (email == null || email.trim().length() == 0)
			return false;
		return emailer.matcher(email).matches();
	}

	/**
	 * 
	 * @函数名称 : isMobileNO
	 * @功能描述 : 判断手机格式是否正确
	 * @参数及返回值说明：
	 * @param mobiles
	 *            手机
	 * @return 是否正确
	 * 
	 * @修改记录：
	 * @日期：2012-12-6 上午8:36:01 修改人：胡文婷
	 * @描述 ：
	 * 
	 */
	public static boolean isMobileNO(String mobiles) {
		Pattern p = Pattern
				.compile("^((1[0,1-9]))\\d{9}$");//首位为1的11位数字
//				.compile("^1[3|4|5|8][0-9]\\d{8}$");//首位为1的3,4,5,8位数字
//				.compile("^((13[0-9])|(15[^4,\\D])|(18[0,2-9]))\\d{8}$");
		Matcher m = p.matcher(mobiles);

		return m.matches();
	}

	/**
	 * 
	 * @函数名称 : isAllNumeber
	 * @功能描述 : 判断是否全是数字
	 * @参数及返回值说明：
	 * @param str
	 *            字符串
	 * @return 是否正确
	 * 
	 * @修改记录：
	 * @日期：2012-12-6 上午8:36:32 修改人：胡文婷
	 * @描述 ：
	 * 
	 */
	public boolean isAllNumeber(String str) {
		Pattern pattern = Pattern.compile("[0-9]*");
		Matcher isNum = pattern.matcher(str);
		if (!isNum.matches()) {
			return false;
		}
		return true;
	}

	/**
	 * 
	 * @函数名称 : isName
	 * @功能描述 : 判断用户名姓名格式 格式：用户名为字母或者汉字
	 * @参数及返回值说明：
	 * @param name
	 *            姓名
	 * @return 是否正确
	 * 
	 * @修改记录：
	 * @日期：2012-12-22 上午10:04:43 修改人：胡文婷
	 * @描述 ：
	 * 
	 */
	public boolean isName(String name) {
		String str = "^[a-z0-9A-Z\u4e00-\u9fa5]+$";
		Pattern p = Pattern.compile(str);
		Matcher m = p.matcher(name);
		return m.matches();
	}

/**
	 * 
	 * @函数名称 : checkAccountAndPassword
	 * @功能描述 : 验证账号与密码的合法性
	 * @参数及返回值说明：
	 * @param str
	 * @return
	 * 
	 * @修改记录：
	 * @日期：2012-12-11 下午5:35:12 修改人：Administrator
	 * @描述 ：
	 * 
	 */
	public static boolean checkAccountAndPassword(String str) {
		String regEx = "^[A-Za-z0-9]+$";
		Pattern p = Pattern.compile(regEx);
		Matcher m = p.matcher(str);
		return m.matches();
	}

	/**
	 * 
	 * @函数名称 : checkRealName
	 * @功能描述 : 姓名的合法性
	 * @参数及返回值说明：
	 * @param str
	 * @return
	 * 
	 * @修改记录：
	 * @日期：2012-12-11 下午5:35:12 修改人：Administrator
	 * @描述 ：
	 * 
	 */
	public static boolean checkRealName(String str) {
		String regEx = "^[\u4e00-\u9fa5]*$";
		Pattern p = Pattern.compile(regEx);
		Matcher m = p.matcher(str);
		return m.matches();
	}

		/**
	 * 
	 * @函数名称 : checkChinese
	 * @功能描述 : 检测字符串中是否包含汉字
	 * @参数及返回值说明：
	 * @param str
	 * @return
	 * 
	 * @修改记录：
	 * @日期：2012-12-11 下午5:35:12 修改人：Administrator
	 * @描述 ：
	 * 
	 */
	  public static boolean checkChinese(String sequence) {
        final String format = "[\\u4E00-\\u9FA5\\uF900-\\uFA2D]";
        boolean result = false;
        Pattern pattern = Pattern.compile(format);
        Matcher matcher = pattern.matcher(sequence);
        result = matcher.find();
        return result;
    }
	
		/**
	 * 
	 * @函数名称 : checkNickname
	 * @功能描述 : 检测字符串中只能包含：中文、数字、下划线(_)、横线(-)
	 * @参数及返回值说明：
	 * @param str
	 * @return
	 * 
	 * @修改记录：
	 * @日期：2012-12-11 下午5:35:12 修改人：Administrator
	 * @描述 ：
	 * 
	 */
	 public static boolean checkNickname(String sequence) {
        final String format = "[^\\u4E00-\\u9FA5\\uF900-\\uFA2D\\w-_]";
        Pattern pattern = Pattern.compile(format);
        Matcher matcher = pattern.matcher(sequence);
        return !matcher.find();
    } 
	
		
		
}
